#ifndef PROCESO_H_
#define PROCESO_H_

#include <list>
/**
 *
 * Clase que define un proceso
 *
 */

class Process {

protected:

	std::list<int> children;

public:

	Process();

	virtual ~Process();

	/**
	 * Se debe heredar e implementar el método run.
	 *
	 * run debe liberar todos los recursos alocados por el proceso.
	 *
	 * @return 0 en caso de exito.
	 *
	 */
	virtual int run() = 0;

	/**
	 * Ejecuta en un nuevo proceso la funcionalidad especificada en run.
	 */
	void execute();

	/**
	 * Termina el proceso
	 * @param ret: valor de retorno del proceso
	 */
	void wait();

};

#endif /* PROCESO_H_ */
